package com.kerbores.nutz.validation;

import org.nutz.mvc.ActionContext;
import org.nutz.mvc.impl.processor.AbstractProcessor;

import com.kerbores.nutz.validation.annotation.AnnotationValidation;

/**
 * @author Kerbores
 *
 *         Create At 2015年1月6日 上午9:11:04
 */
public class ValidationViewProcessor extends AbstractProcessor {

	private AnnotationValidation av = new AnnotationValidation();
	private static final String JSR303_ERROR = "/WEB-INF/400.1.jsp";

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.nutz.mvc.Processor#process(org.nutz.mvc.ActionContext)
	 */
	@Override
	public void process(ActionContext ac) throws Throwable {
		Errors errors = null;
		for (Object obj : ac.getMethodArgs()) {
			errors = av.validate(obj);// 验证参数
			if (errors != null && errors.hasError()) {// 如果有错误
				ac.getRequest().setAttribute("errors", errors.getErrorsList());
				ac.getRequest().getRequestDispatcher(JSR303_ERROR).forward(ac.getRequest(), ac.getResponse());// 存在错误转发到指定页面
				return;
			}
		}
		// 全部校验通过,没有错误则处理下一个
		doNext(ac);
	}

}
